package nivel;

/**
 * Representa una posicion en el plano. Implementa la interfaz comparable
 * 
 * @author Agustin Orge (LU.85538)
 * @author Victoria Martinez de la Cruz (LU.87620)
 */
public class Coordenada implements Comparable<Coordenada> {

	/** posicion del eje X. */
	protected int x;

	/** posicion del eje Y. */
	protected int y;

	/**
	 * Constructor de coordenada, se encarga de inicializar los atributos de
	 * instancia
	 * 
	 * @param x
	 *            posicion del eje X
	 * @param y
	 *            posicion del eje Y
	 */
	public Coordenada(int x, int y) {
		this.x = x;
		this.y = y;
	}

	// Consultas

	/**
	 * Retorna la posicion del eje X
	 * 
	 * @return posicion del eje X
	 */
	public int getX() {
		return x;
	}

	/**
	 * Retorna la posicion del eje Y
	 * 
	 * @return posicion del eje Y
	 */
	public int getY() {
		return y;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
	public int compareTo(Coordenada o) {

		if (this.getX() == o.getX() && this.getY() == o.getY()) {
			return 0;
		} else if (((this.getX() == o.getX() && this.getY() < o.getY()) || this
				.getX() < o.getX())) {
			return 1;
		} else {
			return -1;
		}
	}

	// Comandos

	/**
	 * Modifica la posicion del eje X
	 * 
	 * @param x
	 *            nueva posicion del eje X
	 */
	public void setX(int x) {
		this.x = x;
	}
	
	/**
	 * Modifica la posicion del eje Y
	 * 
	 * @param y
	 *            nueva posicion del eje Y
	 */
	public void setY(int y) {
		this.y = y;
	}

}
